package com.buddy.summary.code.utils;

import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter;
import java.util.ArrayList;

public class FileUtil {

    /**
     * 遍历目录获取文件组成的集合
     * @param filePath
     * @param fileList
     * @return
     */
    public static ArrayList<File> getFileList(File filePath, ArrayList<File> fileList){
        File[] files = filePath.listFiles();
        if (CommonUtil.isEmpty(files)) {
            return null;
        }
        for (File f : files) {
            if (f.isDirectory()) {
                //如果f是一个目录
                getFileList(f,fileList);
            } else {
                //如果f是一个文件
                fileList.add(f);
            }
        }
        return fileList;
    }

    public static ArrayList<File> getFileList(File filePath, ArrayList<File> fileList,String endStr){
        File[] files = filePath.listFiles();
        if (CommonUtil.isEmpty(files)) {
            return null;
        }
        for (File f : files) {
            if (f.isDirectory()) {
                //如果f是一个目录
                getFileList(f,fileList,endStr);
            } else if ((f.getName().toLowerCase()).contains(endStr.toLowerCase())){
                //如果f是一个文件
                fileList.add(f);
            }
        }
        return fileList;
    }




    public static long getFileCount(File pathFile, FilenameFilter filenameFilter,long count){
        File[] files = pathFile.listFiles(filenameFilter);
        if (CommonUtil.isNotEmpty(files)){
            count += files.length;
        }

        File[] childPathFiles = pathFile.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return pathname.isDirectory();
            }
        });
        if (CommonUtil.isNotEmpty(childPathFiles)){
            for (File f : childPathFiles){
                count = getFileCount(f,filenameFilter,count);
            }
        }
        return count;
    }

}
